package com.zhu.classfile.attribute;

import java.nio.ByteBuffer;

/**
 * 在 JVM 中，很多信息不是直接写在结构里的，而是以“属性”的形式附加在类、字段、方法上。
 * 这些“属性”长得不一样，作用也不同，但它们都叫 attribute。
 * .class 文件中哪些地方有 attributes？
 * 几乎 everywhere：
 * 位置	常见属性举例
 * 类（ClassFile）	SourceFile, InnerClasses, Deprecated
 * 字段（field_info）	ConstantValue
 * 方法（method_info）	Code, Exceptions, LineNumberTable
 * Code 属性内部	LocalVariableTable, StackMapTable
 * attribute_info {
 *     u2 attribute_name_index;  // 名字，比如 "Code" 或 "ConstantValue"
 *     u4 attribute_length;
 *     u1 info[attribute_length]; // 具体内容，格式由名字决定
 * }
 * {
 *     attribute_name_index → "Code"
 *     attribute_length: 100
 *     info: [字节码、异常表、局部变量表...]
 * }
 */
public interface AttributeInfo {
    void readInfo(ByteBuffer reader);
}
